A software provider can sell a number of different software and/or service products, for example, by selling subscriptions to customers for the software and service products. An entity that has purchased a subscription to a product is an owner of the subscription. A purchase of a subscription is an owner's right to use the product for the period of the subscription. An owner's use of a subscription can be represented, for example, as an ‘entitlement.’ For example, a customer, such as ACME Company, purchases ten 3-year subscriptions to Enterprise Software ABC and thus, ACME Company is an owner of the ten subscriptions. Ten entitlements represent the ten subscriptions. An owner can then assign the ten entitlements, for example, to various systems. When the owner installs the Enterprise Software ABC on a computing system, the computing system is granted one of the ten entitlements.
Software providers can sell product subscriptions based on product business models. For example, the product business model for Enterprise Software ABC may be to sell subscriptions to the Enterprise Software ABC on a per-CPU-socket-pair basis. Each of ACME Company's ten entitlements are valid for systems that each have two populated CPU sockets. Thus, ACME Company must assign two entitlements to a system that has four populated CPU sockets.
Typically, the enforcement of a software provider's product business model for a particular product is hard-coded in the product source code itself. For example, the product source code for Enterprise Software ABC is hard-coded to enforce the entitlements for the Enterprise Software ABC on a ‘per-CPU-socket-pair’ basis. The software provider's product marketing department may wish to change the product business model of its Enterprise Software ABC from the ‘per-CPU-socket-pair’ basis to the ‘per-core-per-CPU’ to increase revenue.
Conventional solutions require the software developers to change the product source code for the Enterprise Software ABC to enforce the entitlements on a ‘per-core-per-CPU’ basis. The change may be made to the Enterprise Software ABC product source code, but the operable product code, which is distributed to customers to implement the change, may not yet be released. A software provider usually releases the operable product code according to a predetermined product code release schedule. The product code release may not occur until three to six months from when the software provider's product marketing department made the initial request. A software provider's sales department cannot sell subscriptions for the Enterprise Software ABC on a ‘per-core-per-CPU’ basis until the product code, which enforces the new product business model, is released. Thus, there can be a significant amount of time between making a request to change a product business model, hard-coding the changes into the product source code, and releasing the changed operable product code, which can result in a large amount of lost potential revenue. Conventional solutions do not provide a software provider the flexibility to easily change its product business models.